iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
0
Modern Web

Spring Boot and React - 前後端 30 天分手日記系列 第 28

Day 28 - React And BootStrap 卡片式資訊 Card

  • 分享至 

  • xImage
  •  

Day 27 - React And BootStrap 動態橫幅廣告 Carousel

上一章做了橫幅廣告

現在加入卡片式資訊, 我們一樣使用Reactstrap套件

新增MyCard.js

import React, { Component } from 'react';
import {
    Card,
    CardGroup,
    CardText,
    CardBody,
    CardTitle,
    CardSubtitle,
    Button,
} from 'reactstrap';

class MyCard extends Component {

    constructor(props) {
        super(props);
        this.state = { exams: [] };
    }

    componentDidMount() {
        fetch('api/exams').then(response => response.json()).then(data => this.setState({ exams: data }));
    }

    render() {
        const { exams } = this.state;

        const examList = exams.map(exam => {
            return (
                    <CardBody>
                        <CardTitle>證照: {exam.certificate.name}</CardTitle>
                        <CardSubtitle>協辦單位: {exam.vendor.name}</CardSubtitle>
                        <CardText>考試日期: {exam.examDate}</CardText>
                        <Button color="outline-primary">learn more</Button>
                    </CardBody>
            )
        });

        return (
            <CardGroup>
                { examList }
            </CardGroup>
        );
    }
}

export default MyCard;

Fetch API向後端請求exams的資料

大家可以發現這次的資料跟之前不太一樣

exam.certificate.name

exam.vendor.name

為什麼會有兩層呢? 因為我們後端的Model使用JoinColumn直接回傳整個物件

所以在我們的exam裡面會包含certificate與vendor物件

這樣取資料只需要取一次, DB也只需要進出一次, 節省了很多時間

頻繁進出DB會使程式效率極差, 在設計時應特別注意

現在啟動專案, 畫面應該長這樣

https://ithelp.ithome.com.tw/upload/images/20191014/201195105wru1Ey2o7.png

下一章 Day 29 - React Tree Graph 樹狀結構圖


上一篇
Day 27 - React And BootStrap 動態橫幅廣告 Carousel
下一篇
Day 29 - React Tree Graph 樹狀結構圖
系列文
Spring Boot and React - 前後端 30 天分手日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言